/**
 * com.cysyz.array package
 *
 * This package contains utility functions for working with JavaScript arrays.
 *
 * @author <a href="mailto:fzammetti@omnytex.com.cysyz">Frank W. ZAmmetti</a>
 */
if (typeof com.cysyz == 'undefined') {
  com.cysyz = function() { };
}


com.cysyz.validate = function() { };


/**  
 * 判断文本输入框的值是否全部大写字母和数字组成【字母范围A-IV】【数字范围1-65536】  
 * @param objID文本框的id  
 * @param message 警告框里的值  
 * @return false 并出现提醒框  
 */   
com.cysyz.validate.checkInputValueIsExcelCell = function(objID,message){   
    var objValue = document.getElementById(objID).value;   
    var re = /[^A-Z0-9]/g   
    //alert(objValue);   
    //alert(re.test(objValue));   
    if(re.test(objValue)){   
        alert(message);   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;          
    }else{   
        return true;       
    }   
}   
   
/**  
 * 判断文本输入框的值是否全部为字母、数字和小数点组成  
 * @param objID文本框的id  
 * @param message 警告框里的值  
 * @return false 并出现提醒框  
 */   
com.cysyz.validate.checkInputValueIsCharOrNumber2 = function(objID,message){   
    var objValue = document.getElementById(objID).value;   
    var re = /[^A-Za-z0-9.]/g   
    //alert(objValue);   
    //alert(re.test(objValue));   
    if(re.test(objValue)){   
        alert(message);   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;          
    }else{   
        return true;       
    }   
}   
   
/**  
 * 判断文本输入框的值是否全部为字母、下划线或数字组成  
 * @param objID文本框的id  
 * @param message 警告框里的值  
 * @return false 并出现提醒框  
 */   
com.cysyz.validate.checkInputValueIsCharOrNumber = function(objID,message){   
    var objValue = document.getElementById(objID).value;   
    var re = /[^A-Za-z0-9_]/g   
    //alert(objValue);   
    //alert(re.test(objValue));   
    if(re.test(objValue)){   
        alert(message);   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;          
    }else{   
        return true;       
    }   
}   
   
/**  
 * 去除字符串左边空格、右边空格和两边空格  
 * @param str是要验证的文本框的值  
 * @return 返回去掉空格后的文本框的值  
 */   
com.cysyz.validate.trim = function(str){  //删除左右两端的空格   
    return str.replace(/(^\s*)|(\s*$)/g, "");   
}   
   
com.cysyz.validate.ltrim = function(str){  //删除左边的空格   
    return str.replace(/(^\s*)/g,"");   
}   
   
com.cysyz.validate.rtrim = function(str){  //删除右边的空格   
    return str.replace(/(\s*$)/g,"");   
}   
   
/**  
 * 验证文本框的值是否为空值  
 * @param objID文本框的id  
 * @param message 警告框里的值  
 * @return false 并出现提醒框  
 */   
com.cysyz.validate.checkInputValueIsNull = function(objID,message){   
    var objValue = document.getElementById(objID).value;   
    if(objValue=="" || objValue == null){   
        alert(""+message+"的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        document.getElementById(objID).value = trim(objValue);   
        return true;   
    }   
}   
   
   
/*===========================【空值和空格的验证】开始==============================*/   
/**  
 * 空值验证我分为下面几个阶段：  
 * 1.检查是否为null值和空值  
 * 2.检查前后是否有空格  
 * 3.检查所有看是否有空格  
 * 4.替换前后的空格为空值  
 * 5.替换所有的空格为空值  
 * 6.根据情况进行应用  
 */   
   
/**  
 * 检查输入字符串中是否为null值或者空字符串  
 * @param {objID} 对象的ID  
 * @return true OR false;  
 * @modify by @tombo  
 */   
com.cysyz.validate.checkIsNull = function(objID){   
    var objValue = document.getElementById(objID).value;   
    if(objValue=="" || objValue == null){   
        return true;   
    }   
    return false;   
}   
   
/**  
 * 定义一个像java一样的js_trim()函数，替换前后【空格】为空字符串，包括【全角空格】  
 * @param {objID} 对象的ID  
 * @return string  
 * @modify by @tombo  
 */   
com.cysyz.validate.js_trim = function(objID){      
    var str = document.getElementById(objID).value;   
    str += "";   
    while( (str.charAt(0)==' ')||(str.charAt(0)=='　')||(escape(str.charAt(0))=='%u3000') )        
        str=str.substring(1,str.length);   
    while( (str.charAt(str.length-1)==' ')||(str.charAt(str.length-1)=='　')||(escape(str.charAt(str.length-1))=='%u3000') )     
        str=str.substring(0,str.length-1);   
    return str;   
}   
   
   
/**  
 * 检查输入字符串中前后是否有空格  
 * @param {objID} 对象的ID  
 * @return true OR false;  
 * @modify by @tombo  
 */   
com.cysyz.validate.checkSpaceQH = function(objID) {   
    var objValue = document.getElementById(objID).value;   
    var flag = false;   
    var i, ch;   
    //检查输入的值开头是否有空值，\u3000是全角空格的unicode编码   
    for (i = 0; i < 1; i++) {   
        ch = objValue.charAt(i);   
        if (ch == " " || ch == "\u3000") {   
            flag = true;   
            break;   
        }   
    }   
    //检查输入的值结束是否有空值，\u3000是全角空格的unicode编码   
    for (i = objValue.length-1; i < objValue.length; i++) {   
        ch = objValue.charAt(i);   
        if (ch == " " || ch == "\u3000") {   
            flag = true;   
            break;   
        }   
    }   
    return flag;   
}   
   
/**  
 * 检查输入整个字符串中是否有空格  
 * @param {objID} 对象的ID  
 * @return true OR false;  
 * @modify by @tombo  
 */   
com.cysyz.validate.checkSpaceAll = function(objID) {   
    var objValue = document.getElementById(objID).value;   
    var flag = false;   
    var i, ch;   
    //检查输入的值中是否有空值，\u3000是全角空格的unicode编码   
    for (i = 0; i < objValue.length; i++) {   
        ch = objValue.charAt(i);   
        if (ch == " " || ch == "\u3000") {   
            flag = true;   
            break;   
        }   
    }   
    return flag;   
}   
    
/**  
 * 字符串中前后有空格，替换为空值  
 * @param {objID} 对象的ID  
 * @return true OR false;  
 * @modify by @tombo  
 */   
com.cysyz.validate.replaceSpaceQH = function(objID) {   
    //var objValue = document.getElementById(objID).value;   
    var str = js_trim(objID);   
    return str;   
    //document.getElementById(objID).value = str;   
    //alert("--"+str+"--");   
}   
   
/**  
 * 替换所有的空格为空值  
 * @param {objID} 对象的ID  
 * @return true OR false;  
 * @modify by @tombo  
 */   
com.cysyz.validate.replaceSpaceAll = function(objID) {   
    //var objValue = document.getElementById(objID).value;   
    //alert("--"+objValue+"--");   
    var str = js_trim(objID);   
    str=str.replace(/ /g,"");//半角空格   
    str=str.replace(/　/g,"");//全角空格   
    return str;   
    //document.getElementById(objID).value = str;   
    //alert("--"+str+"--");   
}   
   
/**  
 * 下面是判断null值或空值、前后是否有空格；如果前后有空格不替换，而是出现警告信息  
 * @param {objID} 对象的ID  
 * @param message 对象的名称  
 * @modify by @tombo  
 */   
com.cysyz.validate.alertBlankValidateQH = function(objID,message) {   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        if(checkSpaceQH(objID)) {   
            alert("您输入的【"+message+"】中有空格存在！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;   
        }   
    }   
}   
   
/**  
 * 下面是判断null值或空值、前后是否有空格；如果前后有空格直接替换，不出现警告信息  
 * @param {objID} 对象的ID  
 * @param message 对象的名称  
 * @modify by @tombo  
 */   
com.cysyz.validate.replaceBlankValidateQH = function(objID,message) {   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        document.getElementById(objID).value = replaceSpaceQH(objID);      
        return true;   
    }   
}   
   
/**  
 * 下面是判断null值或空值、是否有空格；如果有空格不替换，而是出现警告信息  
 * @param {objID} 对象的ID  
 * @param message 对象的名称  
 * @modify by @tombo  
 */   
com.cysyz.validate.alertBlankValidateAll = function(objID,message) {   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        if(checkSpaceAll(objID)) {   
            alert("您输入的【"+message+"】中有空格存在！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;   
        }   
    }   
}   
   
/**  
 * 下面是判断null值或空值、是否有空格；如果有空格直接替换，不出现警告信息  
 * @param {objID} 对象的ID  
 * @param message 对象的名称  
 * @modify by @tombo  
 */   
com.cysyz.validate.replaceBlankValidateAll = function(objID,message) {   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        document.getElementById(objID).value = replaceSpaceAll(objID);     
        return true;   
    }   
}   
/*===========================【空值和空格的验证】结束==============================*/   
   
   
   
   
/*=============================【日期的验证】开始==============================*/   
/**  
 * 功能：判断是否为日期(格式:2007-04-15)  
 * 使用：dateCheck(objID,message)  
 * 返回：bool  
 * @param  objID   对象的id  
 * @param  message 对象的名称  
 * @modify by @tombo  
 */   
com.cysyz.validate.dateCheck = function(objID,message){   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】为空值，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }   
       
    var datePat = /^(\d{2}|\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;   
    var dateStr = document.getElementById(objID).value;   
    var matchArray = dateStr.match(datePat);    
       
    if(matchArray==null){   
        alert("您输入的【"+message+"】格式不正确，例如: 【2007-03-12】！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }   
       
    year=matchArray[1];   
    month=matchArray[3];   
    day=matchArray[5];        
       
    if (year.length!=4 || month.length!=2 || day.length!=2){   
        alert("您输入的【"+message+"】格式不正确，例如: 【2007-03-12】！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }   
    if (month < 1 || month > 12){   
        alert("您输入的【"+message+"】格式不正确，【"+message+"】的月数不正确！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }   
    if (day < 1 || day > 31){   
        alert("您输入的【"+message+"】格式不正确，【"+message+"】的天数不正确！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }        
    if ((month==4 || month==6 || month==9 || month==11) && day==31){   
        alert("您输入的【"+message+"】格式不正确，【"+message+"】的天数不正确！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }        
    if (month==2){   
        var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));   
        if (day>29 || ((day==29) && (!isleap))){   
            alert("您输入的【"+message+"】格式不正确，【"+message+"】的天数不正确！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;   
        }   
    }   
    return true;   
}   
/*=============================【日期的验证】结束==============================*/   
   
   
   
   
/*=============================【电子邮件地址的验证】开始==============================*/   
/**  
 * 功能：邮箱地址检查  
 * 使用：mailCheck(objID,message,len)  
 * 返回：bool  
 * @param  objID 对象的id  
 * @param  message objID所对应的名字，你可以自己形象的取名字  
 * @param  len objID的值最大长度  
 * @modify @tombo  
 */   
com.cysyz.validate.mailCheck = function(objID,message,len){   
    var objValue = replaceSpaceAll(objID);//将email中的所有空格替换成为空字符串   
    if(objValue!= "" && objValue.length>1){   
        var ok1=objValue.indexOf("@");   
        var ok2=objValue.indexOf(".");   
        if(!((ok1!=-1)&&(ok2!=-1))){   
            alert("您输入的【"+message+"】格式不正确，【"+message+"】的正确写法例如【tombo@sohu.com】！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;   
        }   
        var allowstrlist = "&#%<>";   
        var endvalue = true;   
        for (i=0;i<objValue.length;i++) {   
            if(allowstrlist.indexOf(objValue.substr(i,1))!=-1) {   
                endvalue=false;      
                break;   
            }   
        }   
        if(endvalue==false){   
            alert("您输入的【"+message+"】格式不正确，【"+message+"】的正确写法例如【tombo@sohu.com】！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;      
        }   
        if(objValue.length > len) {   
            alert("您输入的【"+message+"】过长，不能超过"+len+"个字符！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;    
        }   
        //邮件地址正确   
        document.getElementById(objID).value = objValue;   
        return true;   
    }else{   
        //请输入电子信箱地址   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }   
}   
/*=============================【电子邮件地址的验证】结束==============================*/   
   
   
   
   
/*=============================【身份证号码的验证】开始==============================*/   
/**  
 * 功能：验证身份证 目前只对大陆、香港和台湾的身份证做验证  
 * 使用：checkIdentityCard(objID,message)  
 * @param objID 对象的id  
 * @param message 对象的名称  
 * @return bool;  
 * @modify by @tombo  
 */   
com.cysyz.validate.checkIdentityCard = function(objID,message) {   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】为空值，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }      
    var objValue = document.getElementById(objID).value;   
    var area = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",   
                22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",   
                35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",   
                44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",   
                53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",   
                65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}   
    var idcard,Y,JYM;   
    idcard = objValue;   
    var S,M;   
    var idcard_array = new Array();   
    idcard_array = idcard.split("");   
    //身份号码位数及格式检验开始   
    switch(idcard.length) {   
        case 15:   
            //大陆15位身份证号码地区检验   
            if(area[parseInt(idcard.substr(0,2))]==null) {   
                alert("【"+message+"】的地址码不是国家规定的，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
            //大陆15位身份证号码检测   
            if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){   
                //大陆15位身份证号码 闰年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;   
            } else {   
                //大陆15位身份证号码 平年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;   
            }   
            //测试大陆15位身份证号码出生日期的合法性   
            if(ereg.test(idcard)) {   
                return true;   
            }    
            else {   
                alert("【身份证号码】中的出生日期超出范围或者含有非法字符，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();       
                return false;   
            }    
            break;   
        case 18:   
            //大陆18位身份证号码地区检验   
            if(area[parseInt(idcard.substr(0,2))]==null) {   
                alert("【"+message+"】的地址码不是国家规定的，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
            //大陆18位身份证号码检测   
            if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){   
                //大陆18位身份证号码 闰年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;   
            } else {   
                //大陆18位身份证号码 平年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;   
            }   
            //测试大陆18位身份证号码出生日期的合法性   
            if(ereg.test(idcard)){   
                //计算校验位   
                S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7   
                        + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9   
                            + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10   
                                + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5   
                                    + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8   
                                        + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4   
                                            + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2   
                                                + parseInt(idcard_array[7]) * 1    
                                                    + parseInt(idcard_array[8]) * 6   
                                                        + parseInt(idcard_array[9]) * 3 ;   
                Y = S % 11;   
                M = "F";   
                JYM = "10X98765432";   
                M = JYM.substr(Y,1);//判断18位身份证号码的校验位   
                if(M == idcard_array[17])    
                    return true;   
                else {   
                    alert("【身份证号码】中的第18位校验码不正确，请您检查后再输入！");   
                    document.getElementById(objID).focus();   
                    document.getElementById(objID).select();       
                    return false;   
                }    
            }   
            else {   
                alert("【身份证号码】中的出生日期超出范围或者含有非法字符，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();       
                return false;   
            }      
            break;   
        case 10:   
            return true;   
            break;   
        default:   
            alert("【身份证号码】的位数不正确，【大陆身份证】为15位或18位，【台湾身份证】为10位，【香港身份证】包括两个间括号也为10位，请您检查后再输入！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();       
            return false;   
            break;   
    }   
}   
   
   
/**  
 * 功能：结合出生日期验证身份证 目前只对大陆、香港和台湾的身份证做验证  
 * 使用：checkIdentityCard(objID,objID2,message)  
 * @param objID   身份证号码  
 * @param objID2  出生日期  格式为【1980-08-15】  
 * @param message 对象的名称  
 * @return bool;  
 * @modify by @tombo  
 */   
com.cysyz.validate.checkIdentityCard = function(objID,objID2,message) {   
    if(checkIsNull(objID)) {   
        alert("【"+message+"】为空值，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }      
    var objValue = document.getElementById(objID).value;   
    var objValue2 = document.getElementById(objID2).value;   
    var area = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",   
                22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",   
                35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",   
                44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",   
                53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",   
                65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}   
    var idcard,Y,JYM;   
    idcard = objValue;   
    var S,M;   
    var idcard_array = new Array();   
    idcard_array = idcard.split("");   
    //身份号码位数及格式检验开始   
    switch(idcard.length) {   
        case 15:   
            //大陆15位身份证号码地区检验   
            if(area[parseInt(idcard.substr(0,2))]==null) {   
                alert("【"+message+"】的地址码不是国家规定的，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
            //大陆15位身份证号码上的年月日和出生日期检测   
            var yearDate = objValue2.substr(2,2);   
            var monthDate = objValue2.substr(5,2);   
            var dayDate = objValue2.substr(8,2);   
            var yearID = idcard.substr(6,2);   
            var monthID = idcard.substr(8,2);   
            var dayID = idcard.substr(10,2);   
            if(yearDate!=yearID || monthDate!=monthID || dayDate!=dayID) {   
                alert("【"+message+"】和【出生日期】不匹配，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
            //大陆15位身份证号码检测   
            if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){   
                //大陆15位身份证号码 闰年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;   
            } else {   
                //大陆15位身份证号码 平年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;   
            }   
            //测试大陆15位身份证号码出生日期的合法性   
            if(ereg.test(idcard)) {   
                return true;   
            }    
            else {   
                alert("【身份证号码】中的出生日期超出范围或者含有非法字符，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();       
                return false;   
            }    
            break;   
        case 18:   
            //大陆18位身份证号码地区检验   
            if(area[parseInt(idcard.substr(0,2))]==null) {   
                alert("【"+message+"】的地址码不是国家规定的，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
            //大陆18位身份证号码上的年月日和出生日期检测   
            var yearDate2 = objValue2.substr(0,4);   
            var monthDate2 = objValue2.substr(5,2);   
            var dayDate2 = objValue2.substr(8,2);   
            var yearID2 = idcard.substr(6,4);   
            var monthID2 = idcard.substr(10,2);   
            var dayID2 = idcard.substr(12,2);   
            if(yearDate2!=yearID2 || monthDate2!=monthID2 || dayDate2!=dayID2) {   
                alert("【"+message+"】和【出生日期】不匹配，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
            //大陆18位身份证号码检测   
            if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){   
                //大陆18位身份证号码 闰年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;   
            } else {   
                //大陆18位身份证号码 平年出生日期的合法性正则表达式   
                ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;   
            }   
            //测试大陆18位身份证号码出生日期的合法性   
            if(ereg.test(idcard)){   
                //计算校验位   
                S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7   
                        + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9   
                            + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10   
                                + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5   
                                    + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8   
                                        + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4   
                                            + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2   
                                                + parseInt(idcard_array[7]) * 1    
                                                    + parseInt(idcard_array[8]) * 6   
                                                        + parseInt(idcard_array[9]) * 3 ;   
                Y = S % 11;   
                M = "F";   
                JYM = "10X98765432";   
                M = JYM.substr(Y,1);//判断18位身份证号码的校验位   
                if(M == idcard_array[17])    
                    return true;   
                else {   
                    alert("【身份证号码】中的第18位校验码不正确，请您检查后再输入！");   
                    document.getElementById(objID).focus();   
                    document.getElementById(objID).select();       
                    return false;   
                }    
            }   
            else {   
                alert("【身份证号码】中的出生日期超出范围或者含有非法字符，请您检查后再输入！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();       
                return false;   
            }      
            break;   
        case 10:   
            return true;   
            break;   
        default:   
            alert("【身份证号码】的位数不正确，【大陆身份证】为15位或18位，【台湾身份证】为10位，【香港身份证】包括两个间括号也为10位，请您检查后再输入！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();       
            return false;   
            break;   
    }   
}   
/*=============================【身份证号码的验证】结束==============================*/   
   
   
   
   
/*=============================【整数数字的验证】开始==============================*/   
/**  
 * 功能：检查数据入的全部是数字  
 * 使用：checkIsNumberNormal(objID,message,len)  
 * @param objID 对象的id  
 * @param len   对象的值最大长度  
 * @return 是数字ture ，不是数字false;  
 * @modify by @tombo  
 */   
    
//下面这个函数是验证数字为正整数或者为零    
com.cysyz.validate.checkIsNumberNormal = function(objID,message,len){   
    var objValue = document.getElementById(objID).value;   
    if (checkIsNull(objID)){   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        var pattern = "1234567890";    
        var i;    
        var c;    
        for(i=0; i<objValue.length; i++) {    
            c = objValue.charAt(i);    
            if (pattern.indexOf(c) == -1) {    
                alert("【"+message+"】的格式不正确，只能由【1234567890】这些数字组成！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;    
            }    
        }    
        if(objValue.length > len) {   
            alert("您输入的【"+message+"】过大，请检查后再输入！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;    
        }   
    }    
}   
/*=============================【整数数字的验证】结束==============================*/   
   
   
   
   
/*=============================【电话号码的验证】开始==============================*/   
/**  
 * 功能：判断是否为电话号码格式，由于大陆电话号码、港澳台和国际电话号码格式不一样，所以定义了一个通用的  
 * 这里只验证不能包括的特殊字符，除了【0123456789-()+】这些字符  
 * 使用：checkPhoneNormal(objID,message,len)  
 * 返回：bool  
 * @param  objID   对象的id  
 * @param  message 对象的名称  
 * @param  len     对象允许输入的最大长度  
 * @modify by @tombo  
 */   
    
//这是适合大陆电话号码、港澳台地区和国际电话号码的通用函数   
com.cysyz.validate.checkPhoneNormal = function(objID,message,len) {   
    var objValue = document.getElementById(objID).value;   
    if (checkIsNull(objID)){   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        var pattern = "0123456789()+-";   
        for (i=0; i< objValue.length; i++){   
            var CheckChar = objValue.charAt(i);   
            if (pattern.indexOf(CheckChar) == -1){   
                alert("【"+message+"】的格式不正确，只能由【0123456789-()+】这些字符组成！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
        }   
        if(objValue.length > len) {   
            alert("您输入的【"+message+"】过长，请检查后再输入！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;   
        }   
    }      
}   
   
/**  
 * 功能：判断是否为电话号码格式  
 * 这里只验证不能包括的特殊字符，除了【0123456789-()+】这些字符  
 * 因为大陆的电话号码格式为区号为010，020到029，0300到0999，后面的号码为7位或者8位数字  
 * 例如【010-88776655】、【0512-57882095】、【0724-8525712】  
 * 使用：checkPhoneGuoNei(objID,message,len)  
 * 返回：bool  
 * @param  objID   对象的id  
 * @param  message 对象的名称  
 * @param  len     对象允许输入的最大长度  
 * @modify by @tombo  
 */   
//下面是适合专门针对国内的电话号码   
com.cysyz.validate.checkPhoneGuoNei = function(objID,message,len) {   
    var objValue = document.getElementById(objID).value;   
    if (checkIsNull(objID)){   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        var pattern = "0123456789()+-";   
        for (i=0; i< objValue.length; i++){   
            var CheckChar = objValue.charAt(i);   
            if (pattern.indexOf(CheckChar) == -1){   
                alert("【"+message+"】的格式不正确，只能由【0123456789-()+】这些字符组成！");   
                document.getElementById(objID).focus();   
                document.getElementById(objID).select();   
                return false;   
            }   
        }   
        //表示区号由010、020到029、0300到0999中的任意组成，中间的横线可有可无，后面是7位或8位数字组成   
        var pattern2 = /010|02[0-9]{1}|0[3-9]{1}[0-9]{2}[-]{0,1}[0-9]{7,8}/;   
        if (!pattern2.test( objValue )) {    
            alert("【"+message+"】的格式不正确，例如【010-87654567】、【0512-57882043】、\n【0724-8525712】，请检查区号和号码是否正确！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;    
        }          
        if(objValue.length > len) {   
            alert("您输入的【"+message+"】过长，请检查后再输入！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;   
        }   
    }      
}   
/*=============================【电话号码的验证】结束==============================*/   
   
   
   
   
/*=============================【时间的验证】开始==============================*/   
/**  
 * 功能：检查数据输入的全部是时间 例如【13:05:12】，但不能为【13:60:00】  
 * 使用：checkTimeNormal(objID,message)  
 * @param objID 对象的id  
 * @param message 对象的名称  
 * @return bool;  
 * @modify by @tombo  
 */   
com.cysyz.validate.checkTimeNormal = function(objID,message) {   
    var objValue = document.getElementById(objID).value;   
    if (checkIsNull(objID)){   
        alert("【"+message+"】的值为空，请您输入！");   
        document.getElementById(objID).focus();   
        document.getElementById(objID).select();   
        return false;   
    }else{   
        var pattern = new RegExp("^([0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$");   
        if (!pattern.test( objValue )) {    
            alert("【"+message+"】的格式不正确，例如【13:05:20】，请检查是否正确！");   
            document.getElementById(objID).focus();   
            document.getElementById(objID).select();   
            return false;    
        }   
    }   
}   
/*=============================【时间的验证】结束==============================*/   


   